#!/bin/bash

# =============================================================================
# 简化的PKG构建脚本
# 直接使用pkgbuild，避免productbuild的复杂性
# =============================================================================

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m'

# 配置
APP_NAME="LimeReader.app"
CHINESE_APP_NAME="影谷长图处理大师.app"
VERSION="2.7.2"
PKG_NAME="LimeReader_v${VERSION}_macOS_Fixed.pkg"
DIST_DIR="dist"

echo -e "${CYAN}🏗️  简化PKG构建系统${NC}"
echo -e "${CYAN}避免productbuild的复杂性问题${NC}"
echo

# 检查应用
echo -e "${YELLOW}🔍 检查应用状态...${NC}"
if [ ! -d "build/bin/$APP_NAME" ]; then
    echo -e "${RED}❌ 未找到应用: build/bin/$APP_NAME${NC}"
    exit 1
fi

if [ ! -f "build/bin/$APP_NAME/Contents/MacOS/LimeReader" ]; then
    echo -e "${RED}❌ 应用可执行文件不存在${NC}"
    exit 1
fi

echo -e "${GREEN}✅ 应用检查通过${NC}"

# 创建输出目录
mkdir -p "$DIST_DIR"

# 清理临时目录
echo -e "${YELLOW}🧹 准备构建环境...${NC}"
rm -rf pkg_build
mkdir -p pkg_build/root/Applications
mkdir -p pkg_build/scripts

# 复制应用
echo -e "${YELLOW}📦 复制应用...${NC}"
cp -R "build/bin/$APP_NAME" "pkg_build/root/Applications/$CHINESE_APP_NAME"

# 设置中文名称
echo -e "${YELLOW}🏷️  设置应用名称...${NC}"
/usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName 影谷长图处理大师" "pkg_build/root/Applications/$CHINESE_APP_NAME/Contents/Info.plist" 2>/dev/null || true
/usr/libexec/PlistBuddy -c "Set :CFBundleName 影谷长图处理大师" "pkg_build/root/Applications/$CHINESE_APP_NAME/Contents/Info.plist" 2>/dev/null || true

# 清理多余文件
echo -e "${YELLOW}🧹 清理多余文件...${NC}"
rm -f "pkg_build/root/Applications/$CHINESE_APP_NAME/Contents/MacOS/config.json"
rm -f "pkg_build/root/Applications/$CHINESE_APP_NAME/Contents/MacOS/debug.log"
rm -rf "pkg_build/root/Applications/$CHINESE_APP_NAME/Contents/MacOS/cache/"
rm -rf "pkg_build/root/Applications/$CHINESE_APP_NAME/Contents/MacOS/icons/" 2>/dev/null || true

# 修复权限
echo -e "${YELLOW}🔧 修复权限...${NC}"
chmod +x "pkg_build/root/Applications/$CHINESE_APP_NAME/Contents/MacOS/LimeReader"
chmod -R 755 "pkg_build/root/Applications/$CHINESE_APP_NAME"
chown -R $(id -u):$(id -g) "pkg_build/root/Applications/$CHINESE_APP_NAME"

# 创建安装后脚本
echo -e "${YELLOW}📝 创建安装后脚本...${NC}"
cat > pkg_build/scripts/postinstall << 'EOF'
#!/bin/bash

# 设置日志文件路径
LOG_FILE="/tmp/limereader_install.log"
exec > "$LOG_FILE" 2>&1

echo "=== 影谷长图处理大师 安装日志 ==="
echo "安装时间: $(date)"
echo "脚本开始执行..."

# 设置变量
APP="/Applications/影谷长图处理大师.app"
echo "目标路径: $APP"

# 检查安装状态
if [ -d "$APP" ]; then
    echo "✅ 应用文件已复制到目标位置"

    # 获取当前用户
    CURRENT_USER=$(id -un)
    echo "当前用户: $CURRENT_USER"

    # 检查可执行文件
    EXECUTABLE="$APP/Contents/MacOS/LimeReader"
    if [ -f "$EXECUTABLE" ]; then
        echo "✅ 可执行文件存在: $EXECUTABLE"

        # 修复权限
        echo "修复可执行文件权限..."
        chmod +x "$EXECUTABLE"

        # 验证权限修复
        if [ -x "$EXECUTABLE" ]; then
            echo "✅ 可执行文件权限修复成功"
        else
            echo "❌ 可执行文件权限修复失败"
        fi
    else
        echo "❌ 可执行文件不存在: $EXECUTABLE"
    fi

    # 修复所有权
    echo "修复所有权..."
    chown -R "$CURRENT_USER:staff" "$APP" 2>/dev/null || echo "权限修复跳过"
    chmod -R 755 "$APP" 2>/dev/null || echo "目录权限修复跳过"

    # 最终验证
    echo "=== 最终验证 ==="
    if [ -f "$APP/Contents/MacOS/LimeReader" ] && [ -x "$APP/Contents/MacOS/LimeReader" ]; then
        echo "✅ 影谷长图处理大师 安装完成！"
        echo "应用路径: $APP"
        echo "用户: $(ls -ld "$APP" | awk '{print $3}')"
        echo "权限: $(ls -la "$APP/Contents/MacOS/LimeReader" | awk '{print $1}')"

        # 关键步骤：向Launch Services注册应用
        echo "注册应用到系统..."
        if command -v /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Versions/Current/Support/lsregister >/dev/null 2>&1; then
            /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Versions/Current/Support/lsregister -f -v "$APP" 2>/dev/null || echo "应用注册跳过"
        fi

        # 强制更新Finder和系统数据库
        if command -v osascript >/dev/null 2>&1; then
            osascript -e 'tell application "Finder" to update every window' 2>/dev/null || true
        fi

        # 重建Spotlight索引（可选，但有助于快速搜索）
        if command -v mdimport >/dev/null 2>&1; then
            mdimport "$APP" 2>/dev/null || echo "Spotlight索引跳过"
        fi

        echo "✅ 安装完成！应用已注册到系统，现在可以正常使用！"
    else
        echo "❌ 应用安装验证失败"
    fi

else
    echo "❌ 应用文件未找到: $APP"
fi

echo "=== 安装日志结束 ==="
exit 0
EOF

# 设置脚本权限
chmod +x pkg_build/scripts/postinstall

# 验证postinstall脚本
if [ -x "pkg_build/scripts/postinstall" ]; then
    echo -e "${GREEN}✅ 安装后脚本创建成功${NC}"
else
    echo -e "${RED}❌ 安装后脚本创建失败${NC}"
    exit 1
fi

# 构建PKG（直接使用pkgbuild）
echo -e "${YELLOW}🏗️  构建PKG包...${NC}"
pkgbuild \
    --root pkg_build/root \
    --scripts pkg_build/scripts \
    --identifier com.limereader.app \
    --version $VERSION \
    --install-location "/" \
    "$DIST_DIR/$PKG_NAME"

# 清理临时文件
rm -rf pkg_build

# 验证结果
echo -e "${YELLOW}🔍 验证构建结果...${NC}"
if [ -f "$DIST_DIR/$PKG_NAME" ]; then
    size=$(du -h "$DIST_DIR/$PKG_NAME" | cut -f1)
    echo -e "${GREEN}✅ PKG构建成功！${NC}"
    echo -e "${GREEN}📦 文件: $DIST_DIR/$PKG_NAME${NC}"
    echo -e "${GREEN}📊 大小: $size${NC}"
    echo -e "${GREEN}🏷️  应用名称: $CHINESE_APP_NAME${NC}"

    echo -e "${CYAN}🚀 使用方法:${NC}"
    echo -e "${YELLOW}  双击安装: open $DIST_DIR/$PKG_NAME${NC}"
    echo -e "${YELLOW}  命令行安装: sudo installer -pkg $DIST_DIR/$PKG_NAME -target /${NC}"

    # 验证PKG内容
    echo -e "${YELLOW}🔍 验证PKG内容...${NC}"
    if pkgutil --expand "$DIST_DIR/$PKG_NAME" temp_verify >/dev/null 2>&1; then
        if [ -d "temp_verify" ]; then
            app_count=$(find temp_verify -name "$CHINESE_APP_NAME" -type d | wc -l)
            if [ $app_count -gt 0 ]; then
                echo -e "${GREEN}✅ 应用包存在于PKG中${NC}"
            else
                echo -e "${YELLOW}⚠️  应用包验证需要进一步检查${NC}"
            fi

            if [ -f "temp_verify/Scripts/postinstall" ]; then
                echo -e "${GREEN}✅ 安装后脚本存在${NC}"
            else
                echo -e "${YELLOW}⚠️  安装后脚本验证需要进一步检查${NC}"
            fi
            rm -rf temp_verify
        fi
    fi

else
    echo -e "${RED}❌ PKG构建失败${NC}"
    exit 1
fi

echo
echo -e "${GREEN}🎉 简化PKG构建完成！${NC}"
echo -e "${GREEN}现在用户可以直接双击PKG文件完成安装！${NC}"